#ifndef __DICTIONARY_HPP_
#define __DICTIONARY_HPP_
#include "Configuration.hpp"
#include <vector>
#include <unordered_map>
#include <set>
#include <string>

using std::unordered_map;
using std::set;
using std::string;
using std::vector;

class Dictionary {
public:
    static Dictionary *getInstance();
    //获取词典
    const unordered_map<string, int>& getDict();
    //获取索引表
    const unordered_map<string, set<int>>& getIndexTable();
    //执行查询(查询单条记录)
    string doQuery(string word);
    
    static void destroy();
private:
    //初始化字典
    void initDict();
    //初始化索引
    void initIndex();
    Dictionary(){}
    ~Dictionary(){}

private:
    unordered_map<string, int> _dict;   //<单词, 词频>
    unordered_map<string, set<int>> _index;       //<单个汉字/英文字母, 出现行号>
    static Dictionary *_pInstance;

};
#endif
